﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Ras2Logic;

namespace Ras2Win
{
    /// <summary>
    /// Klasinn EditSong
    /// </summary>
    public partial class EditSong : Form
    {
        #region Member breytur
        /// <summary>
        /// Memberbreyta sem inniheldur eitt lag.
        /// </summary>
        private Song m_song;

        /// <summary>
        /// Fall sem mappar saman ID á Performer við Index í listviewinu.
        /// Notað til að finna ID flytjanda út frá nafni flytjanda til að setja inn á lag.
        /// </summary>
        private List<int[]> m_listPerformerIDTable = new List<int[]>();

        #endregion

        #region Smiðir

        /// <summary>
        /// Færibreytulaus smiður
        /// </summary>
        public EditSong()
        {
            InitializeComponent();
        }

        #endregion

        #region Get / Set föll

        /// <summary>
        /// GetSet fall fyrir breytuna Song sem er af taginu Song.
        /// </summary>
        public Song Song
        {
            get
            {
                m_song.ID = Convert.ToInt32(m_txtSongID.Text);
                m_song.Name = m_txtSongName.Text;
                m_song.Description = m_txtDescription.Text;
                m_song.MP3Path = m_txtMP3.Text;
                m_song.PerformerID = Convert.ToInt32(m_txtPerformerID.Text);
                return m_song;
            }
            set
            {
                m_song = value;
                m_txtSongID.Text = Convert.ToString(m_song.ID);
                m_txtSongName.Text = m_song.Name;
                m_txtDescription.Text = m_song.Description;
                m_txtMP3.Text = m_song.MP3Path;
                //m_txtPerformerId.Text er sett annarstaðar.
                //(bæði í load hluta og selectindex hluta á comboboxinu)
            }
        }

        #endregion

        #region Private föll

        /// <summary>
        /// Fall sem keyrir þegar EditSong gluggi er opnaður.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void EditSong_Load(object sender, EventArgs e)
        {
            PerformerController ctrl = new PerformerController();

            //Setja listann inn í List
            for (int i = 0; i < ctrl.GetAllPerformers().Count(); i++)
            {
                //Set nafnið í fieldið
                m_cmbPerformers.Items.Add(ctrl.GetAllPerformers().ElementAt(i).Name);

                //Stetjum ID á móti index í arrayið.
                m_listPerformerIDTable.Add(new int[] { i, ctrl.GetAllPerformers().ElementAt(i).ID });
            }

            //Finna nafnið á flytjanda og láta það vera valið í comboboxinu.
            foreach (var item in m_listPerformerIDTable)
            {
                if ((item[1] == m_song.PerformerID) && (m_cmbPerformers.SelectedIndex != item[0]))
                {
                    m_txtPerformerID.Text = Convert.ToString(m_song.PerformerID);
                    m_cmbPerformers.SelectedIndex = item[0];
                    return; //Búin að finna það sem við vorum að leita að.
                }
            }
        }

        /// <summary>
        /// Þegar eitthvað er valið í comboboxinu þá keyrist þetta.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void m_cmbPerformers_SelectedIndexChanged(object sender, EventArgs e)
        {
            foreach (var item in m_listPerformerIDTable)
            {
                //Er að velja nýtt item úr listanum. finna index númer og matcha það við item 0 ... setja svo item 1 í txt.
                if (m_cmbPerformers.SelectedIndex == item[0])
                {
                    m_txtPerformerID.Text = Convert.ToString(item[1]);
                    return; //Búin að finna það sem við vorum að leita að.
                }
            }
        }

        #endregion

        #region Public föll

        #endregion

    }
}
